package com.sgcc.pda.hzaidl.impl;


import com.sgcc.pda.hw.ISecurityUnitManager;

import com.sgcc.pda.hw.ReturnResult;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * @创建者：suven on 2019/12/17 21:44
 * @描述：
 * @版本：1.0
 * @修改人：
 * @修改时间：
 * @修改说明：
 * @修改版本：
 */
public class SecurityUnitManager extends ISecurityUnitManager.Stub {
    private static SecurityUnitManager mInstance;


    /**
     * 单例
     *
     * @return
     */
    public static synchronized SecurityUnitManager getInstance() {
        if (mInstance == null) {
            mInstance = new SecurityUnitManager();
        }
        return mInstance;
    }

    /**
     * 安全单元初始化
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:   size==0
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult init()    {
        return HardWareUtil.requestHardwareData("unit1_init");
    }


    /**
     * 安全单元同步
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:   size==0
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult sync()    {
        return HardWareUtil.requestHardwareData("unit1_sync");
    }

    /**
     * 获取安全单元工作状态
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：status      返回-状态字
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getStatus()    {
        return HardWareUtil.requestHardwareData("unit1_getStatus");
    }

    /**
     * 获取操作员卡号,业务卡号以及权限
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：operator      操作员卡号
     * 1：operatorPower 权限
     * 2：cover         掩码信息
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getUserCodeAndPermission()    {
        return HardWareUtil.requestHardwareData("unit1_getUserCodeAndPermission");
    }

    /**
     * 注销任务标识
     *
     * @param taskSign 任务标识
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:   size==0
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult logOffTaskSign(String taskSign)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("data", taskSign);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_logOffTaskSign", jb.toString());
    }

    /**
     * 注册任务标志
     *
     * @param taskSign 任务标识
     * @param operator 操作员卡号
     * @param cipher   任务标识数据密文
     * @param mac      密文数据MAC
     * @param randomM  身份认证时返回的认证随机数
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:   size==0
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult registerHostCreatTaskSign(String taskSign, String operator,
                                                  String cipher, String mac, String randomM)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("taskSign", taskSign);
            jb.put("cipher", cipher);
            jb.put("operator", operator);

            jb.put("mac", mac);
            jb.put("randomM", randomM);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_registerHostCreatTaskSign", jb.toString());
    }

    /**
     * 红外认证获取随机数1
     *
     * @param cardType 卡类型
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：random1  随机数1
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getRandom1(String cardType)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("data", cardType);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_getRandom1", jb.toString());
    }

    /**
     * 检测登录密码
     * password  传入的密码
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：remainCount 返回剩余验证次数
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult checkUserPassword(String password)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("data", password);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_checkUserPassword", jb.toString());
    }

    /**
     * 验证随机数1密文并加密随机数2
     *
     * @param keyType   卡类型
     * @param meterNo   电表表号
     * @param esamNo    ESAM模块编号
     * @param enRandom1 电表返回的随机数1密文
     * @param random2   电表返回的随机数2
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：enRandom2 随机数2密文
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult checkRand1AndEncryptRand2(String keyType, String meterNo, String esamNo,
                                                  String enRandom1, String random2)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("meterNo", meterNo);
            jb.put("keyType", keyType);
            jb.put("esamNo", esamNo);

            jb.put("enRandom1", enRandom1);
            jb.put("random2", random2);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_checkRand1AndEncryptRand2", jb.toString());
    }

    /**
     * 下装安全单元权限
     *
     * @param taskSign      任务标识
     * @param authorityData 权限数据
     * @param protectCode   权限数据保护码
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:   size==0
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult downWorkCardKeyCiphertext(String taskSign, String authorityData, String protectCode)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("taskSign", taskSign);
            jb.put("authorityData", authorityData);
            jb.put("protectCode", protectCode);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_downWorkCardKeyCiphertext", jb.toString());
    }

    /**
     * 获取远程身份认证数据
     *
     * @param meterNo 电表表号
     * @param keyType 密钥类型

     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：random1 随机数1
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult remoteAuthentication(String meterNo, String keyType)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("meterNo", meterNo);
            jb.put("keyType", keyType);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_remoteAuthentication", jb.toString());
    }

    /**
     * 获取卡片序列号
     *
     * @param cardType 卡片类型
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：serialNo 序列号
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getSerialNo(String cardType)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("data", cardType);

        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_getSerialNo", jb.toString());
    }

    /**
     * 获取操作员信息
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：name    姓名
     * 1：company 公司
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getOperatorInfo()    {
        return HardWareUtil.requestHardwareData("unit1_getOperatorInfo");
    }

    /**
     * 加密随机数
     *
     * @param random 随机数
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：randomEn 加密后的随机数
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult encryptRandom(String random)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("data", random);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_encryptRandom", jb.toString());
    }

    /**
     * 解密随机数密文
     *
     * @param cipher 随机数密文
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：random 解密后的随机数
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult decryptRandom(String cipher)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("data", cipher);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_decryptRandom", jb.toString());
    }

    /**
     * 获取电表控制命令密文
     *
     * @param taskSign    任务标识
     * @param random2     远程认证时电表返回的随机数2
     * @param esamNo      远程认证时电表返回的ESAM编号
     * @param meterNo     电表表号
     * @param taskData    任务数据
     * @param protectCode 任务数据保护码
     * @param controlCmd  控制数据
     * @param timeLimit   任务有效期
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：enControlData 控制命令密文
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getRemoteControlData(String taskSign, String random2, String esamNo, String meterNo,
                                             String taskData, String protectCode, String controlCmd, String timeLimit)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("meterNo", meterNo);
            jb.put("taskSign", taskSign);
            jb.put("random2", random2);
            jb.put("esamNo", esamNo);
            jb.put("taskData", taskData);
            jb.put("protectCode", protectCode);
            jb.put("controlCmd", controlCmd);
            jb.put("timeLimit", timeLimit);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_getRemoteControlData", jb.toString());
    }

    /**
     * 计算保护码
     *
     * @param taskSign 任务标识
     * @param data     待计算数据
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：protectCode 计算保护码结果
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult computeProtectCode(String taskSign, String data)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("taskSign", taskSign);
            jb.put("data", data);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_computeProtectCode", jb.toString());
    }

    /**
     * 计算参数设置任务数据
     *
     * @param taskSign    任务标识
     * @param random2     电表远程身份认证返回的随机数
     * @param esamNo      电表远程身份认证返回的ESANNo
     * @param meterNo     电表表号
     * @param taskData    任务数据明文
     * @param protectCode 任务数据保护码
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：cipherData  任务数据密文
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getSetData(String taskSign, String random2, String esamNo, String meterNo, String taskData,
                                   String protectCode)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("meterNo", meterNo);
            jb.put("taskSign", taskSign);
            jb.put("random2", random2);
            jb.put("esamNo", esamNo);
            jb.put("taskData", taskData);
            jb.put("protectCode", protectCode);

        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_getSetData", jb.toString());
    }

    /**
     * 计算充值任务数据
     *
     * @param taskSign    任务标识
     * @param random2     电表远程身份认证返回的随机数
     * @param esamNo      电表远程身份认证返回的ESAMNo
     * @param meterNo     电表表号
     * @param taskData    任务数据明文
     * @param protectCode 任务数据保护码
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：cipherData  任务数据密文
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getChargeData(String taskSign, String random2, String esamNo, String meterNo, String taskData,
                                      String protectCode)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("meterNo", meterNo);
            jb.put("taskSign", taskSign);
            jb.put("random2", random2);
            jb.put("esamNo", esamNo);
            jb.put("taskData", taskData);
            jb.put("protectCode", protectCode);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_getChargeData", jb.toString());
    }

    /**
     * 计算时钟设置命令
     *
     * @param taskSign 任务标识
     * @param random2  电表远程身份认证返回的随机数
     * @param esamNo   电表远程身份认证返回的ESAMNo
     * @param meterNo  电表表号
     * @param taskData 任务数据明文
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：cipherData  任务数据密文
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getClockData(String taskSign, String random2, String esamNo, String meterNo, String taskData)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("meterNo", meterNo);
            jb.put("taskSign", taskSign);
            jb.put("random2", random2);
            jb.put("esamNo", esamNo);
            jb.put("taskData", taskData);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_getClockData", jb.toString());
    }

    /**
     * 修改操作员密码
     *
     * @param oldPassword 原密码
     * @param newPassword 新密码
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:   size==0
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult changePassword(String oldPassword, String newPassword)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("oldPassword", oldPassword);
            jb.put("newPassword", newPassword);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_changePassword", jb.toString());
    }

    /**
     * 计算传输MAC
     *
     * @param data    待计算数据
     * @param randomM 主站身份认证时返回的随机数M
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：mac     计算MAC结果
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult computeMac(String data, String randomM)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("data", data);
            jb.put("randomM", randomM);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_computeMac", jb.toString());
    }

    /**
     * 验证传输MAC
     *
     * @param randomM 主站身份认证时返回的随机数M
     * @param data    待计算数据
     * @param mac     已有传输MAC
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：result  验证结果
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult checkMac(String randomM, String data, String mac)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("randomM", randomM);
            jb.put("data", data);
            jb.put("mac", mac);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_checkMac", jb.toString());
    }

    /**
     * 获取安全单元固件版本
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：version 固件版本信息
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getVersion()    {

        return HardWareUtil.requestHardwareData("unit1_getVersion");
    }

    /**
     * 查询卡计数机器
     *
     * @param cardType 卡片类型
     * @param index    索引目录
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：result 返回查询结果
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult queryIndexCount(String cardType, String index)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("cardType", cardType);
            jb.put("index", index);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_queryIndexCount", jb.toString());
    }

    /**
     * 修改卡计数机器
     *
     * @param cardType 卡片类型
     * @param index    索引目录
     * @param count    计数次数
     * @param mac      传输MAC
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:   size==0
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult changeCount(String cardType, String index,
                                    String count, String mac)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("cardType", cardType);
            jb.put("index", index);
            jb.put("count", count);
            jb.put("mac", mac);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_changeCount", jb.toString());
    }

    /**
     * 获取密钥更新任务数据
     *
     * @param taskSign    任务标识
     * @param random2     电表远程身份认证返回的随机数
     * @param esamNo      电表远程身份认证返回的ESAMNo
     * @param meterNo     电表表号
     * @param taskData    密钥任务明文数据
     * @param protectCode 任务数据保护码
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：cipherData  密钥更新任务密文数据
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getKeyData(String taskSign, String random2, String esamNo, String meterNo, String taskData,
                                   String protectCode)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("meterNo", meterNo);
            jb.put("taskSign", taskSign);
            jb.put("random2", random2);
            jb.put("esamNo", esamNo);
            jb.put("taskData", taskData);
            jb.put("protectCode", protectCode);

        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_getKeyData", jb.toString());
    }

    /**
     * 对比随机数1密文并加密随机数2
     * 用户掌机红外认证升级方案（无任务数据直接进行红外人认证）
     *
     * @param keyType       密钥类型
     * @param meterNo       电表表号
     * @param esamNo        ESAMNo
     * @param random1Cipher 随机数1密文
     * @param random2       随机数2
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：random2Cipher 随机数2密文
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult commonCheckRand1AndEncryptRandom(String keyType, String meterNo, String esamNo,
                                                         String random1Cipher, String random2)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("meterNo", meterNo);
            jb.put("keyType", keyType);
            jb.put("random2", random2);
            jb.put("esamNo", esamNo);
            jb.put("random1Cipher", random1Cipher);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_commonCheckRand1AndEncryptRandom", jb.toString());
    }

    /**
     * 安全单元固件升级
     *
     * @param fileName 固件文件绝对路径
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:   size==0
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult fileUpdate(String fileName)    {
        JSONObject jb = new JSONObject();
        try {
            jb.put("data", fileName);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return HardWareUtil.requestHardwareData("unit1_fileUpdate", jb.toString());
    }

    /**
     * 获取操作员卡类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：userCardType 返回操作员卡类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getUserCardType()    {

        return HardWareUtil.requestHardwareData("unit1_getUserCardType");
    }

    /**
     * 获取业务卡类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：workCardType 返回业务卡类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getWorkCardType()    {

        return HardWareUtil.requestHardwareData("unit1_getWorkCardType");
    }

    /**
     * 获取公钥类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：publicKeyType 返回公钥类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getPublicKeyType()    {
        return HardWareUtil.requestHardwareData("unit1_getPublicKeyType");
    }

    /**
     * 获取私钥类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：privateKeyType 返回私钥类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getPrivateKeyType()    {

        return HardWareUtil.requestHardwareData("unit1_getPrivateKeyType");
    }

    /**
     * 获取红外权限类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：infraAuthorityType 返回红外权限类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getInfraAuthorityType()    {

        return HardWareUtil.requestHardwareData("unit1_getInfraAuthorityType");
    }

    /**
     * 获取控制权限类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：controlAuthorityType 返回控制权限类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getControlAuthorityType()    {

        return HardWareUtil.requestHardwareData("unit1_getControlAuthorityType");
    }

    /**
     * 获取1类参数权限类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：params1AuthorityType 返回1类参数权限类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getParam1AuthorityType()    {
        return HardWareUtil.requestHardwareData("unit1_getParam1AuthorityType");
    }

    /**
     * 获取2类参数权限类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：params2AuthorityType 返回2类参数权限类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getParam2AuthorityType()    {
        return HardWareUtil.requestHardwareData("unit1_getParam2AuthorityType");
    }

    /**
     * 获取第一套费率设置权限类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：rate1AuthorityType 返回第一套费率设置权限类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getRate1AuthorityType()    {
        return HardWareUtil.requestHardwareData("unit1_getRate1AuthorityType");
    }

    /**
     * 获取第二套费率设置权限类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：rate2AuthorityType 返回第二套费率设置权限类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getRate2AuthorityType()    {

        return HardWareUtil.requestHardwareData("unit1_getRate2AuthorityType");
    }

    /**
     * 获取充值权限类型
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0：chargeAuthorityType 返回充值权限类型
     * :List<String> datas(code==其他): size==0
     */
    public ReturnResult getChargeAuthorityType()    {
        return HardWareUtil.requestHardwareData("unit1_getChargeAuthorityType");
    }

}
